const { queryLableByName, create } = require("../service/lable.service");

/**
 * 原先存在的标签和新增标签的合并处理
 * @param {*} ctx 
 * @param {*} next 
 */
const verifyLableExists = async (ctx, next) => {
  const { lables } = ctx.request.body

  // 将数据整理为 [{id:id1, name:"标签名"},{id:id2, name:"标签名2"}]

  // 查询lable数据库
  // 新增数据若存在于lable数据库中，直接使用
  // 新增数据若不存在于lable数据库中，插入数据库
  const newLables = []
  for (const lable of lables) {
    const res = await queryLableByName(lable)
    const labelObj = {name:lable}
    if(res) {
      labelObj.id = res.id
    } else{
      // 新增数据插入到lable数据库中
      const insertRes = await create(lable)
      labelObj.id = insertRes.insertId
    }

    newLables.push(labelObj)
  }

  // 将lables存在在ctx中共享
  ctx.lables = newLables
  await next()
}

module.exports = {
  verifyLableExists
}